//package com.yc.service.impl;
//
//import com.yc.bean.*;
//import com.yc.mapper.CartMapper;
//import com.yc.mapper.OrderItemMapper;
//import com.yc.mapper.OrderMapper;
//import com.yc.mapper.ProductMapper;
//import com.yc.service.OrderService;
//import com.yc.web.bean.ResponseResult;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@Service
//public class OrderServiceImpl implements OrderService {
//
//    @Autowired
//    private OrderMapper orderMapper;
//
//    @Autowired
//    private OrderItemMapper orderItemMapper;
//
//    @Autowired
//    private CartMapper cartMapper;
//
//    @Autowired
//    private ProductMapper productMapper;
//
//    /**
//     * 用户下单操作：从购物车生成订单和订单项，同时清空购物车
//     *
//     * @param userId      用户ID
//     * @param addressId   收货地址ID
//     * @param paymentType 支付方式（如：1=支付宝，2=微信）
//     * @return 下单结果，成功返回订单ID
//     */
//    @Override
//    public ResponseResult placeOrder(Long userId, Long addressId, Byte paymentType) {
//        List<Cart> cartList = cartMapper.findCartByUserId(userId);
//        if (cartList == null || cartList.isEmpty()) {
//            return ResponseResult.error("购物车为空，无法下单");
//        }
//
//        Long orderId = System.currentTimeMillis();
//
//        Order order = new Order();
//        order.setId(orderId);
//        order.setUserId(userId);
//        order.setAddressId(addressId);
//        order.setPaymentType(paymentType);
//        order.setOrderStatus(1); // 待支付
//        order.setUpdateTime(new Date());
//        orderMapper.insertOrder(order);
//
//        for (Cart cart : cartList) {
//            Product product = productMapper.findById(cart.getProductId());
//            if (product == null) {
//                return ResponseResult.error("商品ID " + cart.getProductId() + " 不存在");
//            }
//
//            OrderItems item = new OrderItems();
//            item.setId(System.currentTimeMillis() + cart.getProductId());
//            item.setOrderId(orderId);
//            item.setProductId(cart.getProductId());
//            item.setQuantity(cart.getQuantity());
//            item.setPrice(product.getPrice());
//
//            orderItemMapper.insertOrderItem(item);
//        }
//
//        cartMapper.clearCart(userId);
//
//        return ResponseResult.ok("下单成功").setData(orderId);
//    }
//
//    /**
//     * 查询用户的所有订单
//     *
//     * @param userId 用户ID
//     * @return 用户订单列表
//     */
//    @Override
//    public ResponseResult listOrders(Long userId) {
//        List<Order> orders = orderMapper.findOrdersByUserId(userId);
//        return ResponseResult.ok().setData(orders);
//    }
//
//    /**
//     * 查询指定订单的详细信息，包括订单主信息和订单项
//     *
//     * @param orderId 订单ID
//     * @return 包含订单及其订单项的详细信息
//     */
//    @Override
//    public ResponseResult getOrderDetails(Long orderId) {
//        Order order = orderMapper.findOrderById(orderId);
//        if (order == null) {
//            return ResponseResult.error("订单不存在");
//        }
//
//        List<OrderItems> items = orderItemMapper.findItemsByOrderId(orderId);
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("order", order);
//        result.put("items", items);
//        return ResponseResult.ok().setData(result);
//    }
//
//    /**
//     * 用户取消订单，仅限“待支付”状态的订单
//     *
//     * @param orderId 订单ID
//     * @param userId  用户ID
//     * @return 取消结果
//     */
//    @Override
//    public ResponseResult cancelOrder(Long orderId, Long userId) {
//        Order order = orderMapper.findOrderById(orderId);
//        if (order == null || !order.getUserId().equals(userId)) {
//            return ResponseResult.error("订单不存在或无权限取消");
//        }
//
//        if (order.getOrderStatus() != 1) {
//            return ResponseResult.error("当前订单状态无法取消");
//        }
//
//        int rows = orderMapper.updateOrderStatus(orderId, 0); // 0 - 已取消
//        return rows > 0 ? ResponseResult.ok("取消成功") : ResponseResult.error("取消失败");
//    }
//
//    /**
//     * 支付订单，前提是订单处于“待支付”状态
//     *
//     * @param orderId     订单ID
//     * @param paymentType 支付方式
//     * @return 支付结果
//     */
//    @Override
//    public ResponseResult payOrder(Long orderId, Byte paymentType) {
//        Order order = orderMapper.findOrderById(orderId);
//        if (order == null) {
//            return ResponseResult.error("订单不存在");
//        }
//
//        if (order.getOrderStatus() != 1) {
//            return ResponseResult.error("订单状态无法支付");
//        }
//
//        int rows = orderMapper.payOrder(orderId, paymentType);
//        return rows > 0 ? ResponseResult.ok("支付成功") : ResponseResult.error("支付失败");
//    }
//}
